#include <stdio.h>
#include <stdint.h>
//   将一个16位数word  a的高8位赋给byte  b，低8位赋给byte  c，再将b的高4位清零，c的低4位置位后，重新以b为高位，c为低位的方式组合成16位数赋给word  d。

int main()
{
    uint16_t a = 0xABCD;
    uint8_t b, c;
    uint16_t d;

    // 将高8位赋给 b，低8位赋给 c
    b = (a >> 8) & 0xFF;
    c = a & 0xFF;

    // 将 b 的高4位清零，c 的低4位设置为 1
    b &= 0xF0;
    c |= 0x0F;

    // 将 b 和 c 组合成 16 位数赋给 d
    d = ((uint16_t)b << 8) | c;

    printf("a = 0x%04X\n", a);
    printf("b = 0x%02X\n", b);
    printf("c = 0x%02X\n", c);
    printf("d = 0x%04X\n", d);

    return 0;
}
